<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        
// 构造函数
let p = new Promise((resolve, reject) =>{
    // 同步调用
    resolve("ok")
})
// then方法
p.then(value => {},reason =>{})
// catch方法    用来指定失败的回调
p.catch(reason =>{})
// resolve方法  属于构造函数对象的，不属于实例对象
let p1 =Promise.resolve(521)
// 如果传入的参数不是promise类型的对象，返回值为一个成功的promise对象
// 如果传入的参数为Promise对象，则参数的结果决定了resolve的结果
let p2 =Promise.resolve(new Promise((resolve, reject)=>{
    reject('ok')
}))
p2.catch(reason=>{
    console.log(reason)
})
// reject   返回一个失败的promise对象
let p3 =Promise.reject(521)
p3.catch(reason =>{
    console.log(reason)
})
// all  有一个参数一般为一个包含promise对象的数组，返回值为一个新的promise
// 状态如果数组中有一个promise为失败则返回的结果是失败只有所有的promise状态为成功返回结果为成功
// 返回值当成功时返回值为一个数组，数组中的元素时每一个promise的结果，失败时则返回值为失败的promise的结果
let p4 = new Promise((resolve, reject) =>{resolve('ok')})
let p5 = new Promise((resolve, reject) =>{resolve('ok')})
let p6 = new Promise((resolve, reject) =>{resolve('ok')})
const result = Promise.all([p4,p5,p6])
console.log(result)
// reca 一个参数包含promise对象的数组  第一个完成的promise的返回结果就是这个对象的结果
const result1 = Promise.race([p4,p5,p6])
    </script>
</body>
</html>